25. 一次线性同余方程组的解数公式

一次线性同余方程组 a1x1++akxkb(modm) 的解数为 mk1d [db],其中 d=(a1,,ak,m).

证明.

用 OI 的话说,我们来进行单位根反演。

x=0m1ωmcx=m[mc]

这个式子起到了一个检验是否整除的效果。

那么我们直接枚举每个变量的取值,容易发现解数为

T=1mc=0m1x1=0m1xk=0m1ωmc(a1x1++akxkb)=mk1c=0m1ωmbc[mca1][mcak]=mk1c=0m1ωmbc[mc(a1,,ak)]=mk1c=0m1ωmbc[mdc]

到这一步枚举 c=tmd,易得 t=0,1,,d1,故

T=mk1t=0d1ωmbtm/d=mk1t=0d1ωdbt=mk1d [db]

证毕。

练习. 证明:

k=0n(4n+14k+1)=24n1+(1)n22n1

注. 实际上不定方程的解数也能有类似的表示,关键是

01exp(2πicx)=[c=0]